iT邦幫忙

2022 iThome 鐵人賽

DAY 27
0
自我挑戰組

iOS Junior的菜雞之路系列 第 27

Array避免Crash 小撇步

  • 分享至 

  • xImage
  •  

今天想來分享的是 Array Safe的問題
之前看了別人寫的專案,都會有個safe的後綴詞,然後我想都想不明白那到底是什麼
直到我看到了這篇
https://medium.com/@daoseng33/swift-array-%E5%AE%89%E5%85%A8%E5%8F%96%E5%80%BC-bf69641c2913

那就來分享一下這個東西

先看範例

// 這就是常見的data的safe取值方式
// 這代表什麼意思 -> 繼續往下看
data[safe: index]

Extension

extension Collection {
    subscript (safe index: Index) -> Element? {
        // 如果有該值就會回傳該值,如果沒有該值就回傳nil
        return indices.contains(index) ? self[index] : nil
    }
}

使用

// 我們就可以這樣處理問題
// 假設我們在VM處理從API打回的資料 進行本地端的刪除動作
func removeItem(index: Int) {
    if let haveData = data[safe: index] {
        // 如果有資料的話就先刪除一波資料
        data.remove(at: index)
    } else {
        // 如果沒有資料,可以讓資料Reload,讓data重新載入
        reloadData?()
    }
}

參考資料

https://medium.com/@daoseng33/swift-array-%E5%AE%89%E5%85%A8%E5%8F%96%E5%80%BC-bf69641c2913

坑:
如果常常遇到Crash問題,那麼就可以加入防呆措施以免造成使用者方面的不愉快


上一篇
TextView AttributesString
下一篇
Swift 圖表套件 Charts
系列文
iOS Junior的菜雞之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言